<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      const p = new Promise((resolve, reject) => {
        //同步任务
        // console.log(321)
        //成功为resolve
        resolve('我是成功的结果')
        //失败为reject
        // reject('error')
      })

      // then方法可以重复链式调用 then方法返回值就是promise对象
      // then中的成功回调函数的结果就是下次then方法的res参数,如果结果为一个Prommise对象，那么状态和结果取决于这个Promise对象
      // then方法return非Promise类型，一定进成功这个函数
      // then方法return Promise类型，根据这个Promise对象的状态进那个参数

      p.then((res) => {
        console.log('我是成功的回调函数')
        console.log(res)
        return 1
      })
        //第二次调用then
        .then((res) => {
          console.log('我是成功的回调函数')
          console.log(res)
          return 2
        })
        //第三次调用then
        .then((res) => {
          console.log('我是成功的回调函数')
          console.log(res)
          return new Promise((resolve, reject) => {
            // resolve('我是第一次then的成功结果')
            reject('我是第一次then的失败结果')
          })
        })
        //第四次调用then
        .then((res) => {
          console.log('我是成功的回调函数')
          console.log(res)
          return 4
        })
        //第五次调用then
        .then((res) => {
          console.log('我是成功的回调函数')
          console.log(res)

          return 5
        })
        .catch((err) => console.log(err))
    </script>
  </body>
</html>
